%%%===================================================================
%%% 日志
%%%===================================================================

-define(ECHO(Format),               catch sys_logger:echo(Format, [])).
-define(ECHO(Format, Args),         catch sys_logger:echo(Format, Args)).

-ifdef(debug).
-define(DEBUG(Format),              sys_logger:debug(Format, [], ?MODULE, ?LINE)).          % 调试日志
-define(DEBUG(Format, Args),        sys_logger:debug(Format, Args, ?MODULE, ?LINE)).        % 调试日志
-else.
-define(DEBUG(_Format),		        ok). % 忽略调试日志
-define(DEBUG(_Format, _Args),      ok). % 忽略调试日志
-endif.

-define(INFO(Format),               catch sys_logger:info(Format, [], ?MODULE, ?LINE)).     % 重要日志
-define(INFO(Format, Args),         catch sys_logger:info(Format, Args, ?MODULE, ?LINE)).   % 重要日志
-define(ERR(Format),                catch sys_logger:error(Format, [], ?MODULE, ?LINE)).    % 错误日志
-define(ERR(Format, Args),          catch sys_logger:error(Format, Args, ?MODULE, ?LINE)).  % 错误日志


%%%===================================================================
%%% 功能
%%%===================================================================

-define(IF(B, T, F),                case (B) of true -> (T); false -> (F) end).

-define(RESP_SUCCESS(Data),                   {json, 200, #{code => 0, data => Data}}).
-define(RESP_FAILED(StatusCode, Data),        {json, StatusCode, Data}).
-define(RESP_FAILED_ERR(StatusCode, Data),    erlang:error({json, StatusCode, Data})).


%%%===================================================================
%%% 分页
%%%===================================================================

-record(page_param, {
    field :: string()   % 查询字段, 如 "`id`,`name`,`age`", 默认为 *
    ,wheres :: [term()] % 条件查询, 如 [{"type!=?", 1}, "name!='admin'"]
    ,order :: string()  % 排序字段, 如 "`id` ASC, `age` DESC"
}).
